Skip to main content

How to Test Event-Based Alerts

This guide outlines the recommended workflow for testing your event-based alerts.


1. Verify Alert Exists in Corva UI

Before testing, ensure that your alert is created and visible in the Corva UI under the Alerts tab.


2. Manually Trigger Alerts with Postman

Use Postman or a similar API testing tool to manually trigger the alert via an API call. For example, you can use the following cURL command:

curl --location 'https://api.corva.ai/v1/alerts/definitions/trigger/' \
--header 'Authorization: API YOUR_KEY' \
--header 'Content-Type: application/json' \
--data '{
"identifier": "block_max_speed_test",
"asset_id": 612332952
}'

Expected Responses

{
"status": "OK",
"alerts": ["alerts_data"]
}
  • Successful Trigger: If the response returns a 200 OK status and the alerts array contains data, the alert was triggered successfully.
  • No Trigger: If you receive a 200 OK status but the alerts array is empty, it means the alert was not triggered.

Example of a Succesful Trigger:

{
"status": "OK",
"alerts": [
{
"id": 12496502,
"alert_definition_id": 14756,
"asset_id": 12345566,
"data": {
"app": "corva.witsml-source",
"start": "2025-02-18T08:43:28.154Z",
"finish": "2025-02-18T09:13:28.154Z",
"end_doc": null,
"end_rop": 0,
"end_tvd": 8796.689,
"version": 1,
"asset_id": 12345566,
"metadata": {
"mud": "67b381ce55c49f0216cdb13a",
"casing": "67b2b8ff55c49f0172c82a39",
"rig_id": null,
"cuttings": null,
"drillstring": null,
"plan_survey": "67b3bf2404ba7f0152a0f805",
"actual_survey": "675db943897fd6015f555138",
"surface-equipment": "6753163dc68cfb014ccb7079"
},
"provider": "corva",
"end_state": "In Slips",
"start_doc": null,
"start_rop": 0,
"start_tvd": 8796.689,
"timestamp": 1739869993,
"collection": "wits",
"company_id": 346,
"end_ad rop": null,
"end_gas_c1": null,
"end_gas_c2": null,
"end_gas_c3": null,
"end_n2 out": null,
"end_oxygen": null,
"end_dba heave compensator amplitude": null,
"end_dba mud addition removal volume": null,
"end_dba mud volume connection delta": null,
"end_dba mud volume total fault code": null,
"end_dba rotary opt drill index inst": null,
"end_dba top drive torque fault code": null,
"end_kz ad offset calculation status": null,
"end_kz carbonate stringer detection": null,
"end_mwd - picos de choques axiales": null,
"end_rss_desired_steering_proportion_prds": null,
"start_kz mwd stickslip severity error cap": null,
"start_mwd - laterall vibration diagnostic": null,
"start_mwd - torsional vibration diagnostic": null,
"start_rss_desired_steering_proportion_prds": null,
"end_kz internal ss percentage max threshold": null,
"end_kz mwd stickslip severity max threshold": null,
"end_rss_effective_steering_proportion_propeff": null,
"start_kz internal ss percentage max threshold": null,
"start_kz mwd stickslip severity max threshold": null,
"start_rss_effective_steering_proportion_propeff": null
},
"created_at": "2025-02-18T09:13:28.338Z",
"updated_at": "2025-02-18T09:13:28.338Z",
"alert_at": "2025-02-18T09:13:28.154Z",
"decision_path": null,
"status": "open",
"occurrences": 1,
"last_alert_at": "2025-02-18T09:13:28.154Z",
"closed_at": null,
"company_id": 346,
"validated": false,
"validated_at": null,
"validated_by_id": null,
"comments_amount": 0,
"likes_count": 0,
"report": null,
"alert_classification": "unclassified",
"classified_by_id": null,
"classified_at": null,
"acknowledged": false,
"acknowledged_by_id": null,
"acknowledged_at": null,
"latest_data": {
"app": "corva.witsml-source",
"start": "2025-02-18T08:43:28.154Z",
"finish": "2025-02-18T09:13:28.154Z",
"end_doc": null,
"end_rop": 0,
"end_tvd": 8796.689,
"version": 1,
"asset_id": 72328631,
"metadata": {
"mud": "67b381ce55c49f0216cdb13a",
"casing": "67b2b8ff55c49f0172c82a39",
"rig_id": null,
"cuttings": null,
"drillstring": null,
"plan_survey": "67b3bf2404ba7f0152a0f805",
"actual_survey": "675db943897fd6015f555138",
"surface-equipment": "6753163dc68cfb014ccb7079"
},
"provider": "corva",
"end_state": "In Slips",
"start_doc": null,
"start_rop": 0,
"start_tvd": 8796.689,
"timestamp": 1739869993,
"collection": "wits",
"company_id": 346,
"end_ad rop": null,
"end_gas_c1": null,
"end_pipe od": null,
"end_rigtime": "2025-02-18T06:13:13-03:00",
"end_rpm bit": 0,
"end_spare74": null,
"end_spare81": null,
"end_srv_azi": null,
"end_srv_inc": null,
"end_temp_in": null,
"start_state": "In Slips",
"end_bit size": null,
"end_dens_out": null,
}
}
]
}

3. Start Simple and Gradually Add Complexity

We recommend keeping the logic of your flow simple at the beginning. Start with a basic if-else condition to test alert triggering. Once you are confident that the app behaves as expected, you can incrementally add more complex logic and conditions.


🎯 Happy Testing!